package com.mirai.mirai_boot.api;

import com.alibaba.fastjson.JSONObject;
import com.mirai.mirai_boot.entity.Music;
import com.mirai.mirai_boot.utils.JsoupUtils;
import org.springframework.stereotype.Component;

import java.io.IOException;

/**
 * @author : CP
 * @version: 1.0
 * @program : mirai_boot
 * @description : 网易云音乐实现
 * @date : 2021-07-01 14:55
 **/
@Component
public class NeteaseCloudMusicApi {

    public Music getMusic(String para) throws IOException {

        // 连接
        String url = "http://music.163.com/api/search/get/web?type=1&s=" + para;

        // 解析json 取一条数据
        JSONObject jsonObject = JSONObject.parseObject(JsoupUtils.connect(url))
                .getJSONObject("result")
                .getJSONArray("songs")
                .getJSONObject(0);

        // 播放地址id
        String id = jsonObject.getString("id");
        // 网络播放地址
        String jumpUrl = "https://music.163.com/#/song?id=" + id;
        // 标题
        String title = jsonObject.getString("name");
        // 演唱歌手
        String summary = jsonObject.getJSONArray("artists").getJSONObject(0).getString("name");

        //播放地址
        String goUrl = "https://api.imjad.cn/cloudmusic/?type=song&id=" + id;
        // 解析json 取一条数据
        String data = JSONObject.parseObject(JsoupUtils.connect(goUrl))
                .getJSONArray("data")
                .getJSONObject(0)
                .getString("url");

        // 歌曲图片
        String picture = "https://api.imjad.cn/cloudmusic/?type=detail&id=" + id;
        String img1v1Url = JSONObject.parseObject(JsoupUtils.connect(picture))
                .getJSONArray("songs")
                .getJSONObject(0)
                .getJSONObject("al")
                .getString("picUrl");

        //生成音乐类
        Music music = new Music();
        music.setType("163");
        // 播放地址
        music.setJumpUrl(jumpUrl);
        music.setMusicUrl(data);
        // 播放图片
        music.setPictureUrl(img1v1Url);
        // 歌手
        music.setSummary(summary);
        // 标题
        music.setTitle(title);
        music.setBrief(title);
        System.out.println(music);
        return music;
    }
}
